package com.zf.community.service;

import com.zf.community.entity.Message;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MessageService {
    // 查询当前用户的会话列表，针对每个会话只返回一条最新的私信
    List<Message> findConversations(int userId, int offset, int limit);

    // 查询当前用户的会话数量
    int findConversationCount(int userId);

    // 查询某个会话所包含的私信列表
    List<Message> findLetters(@Param("conversationId") String conversationId, @Param("offset") int offset, @Param("limit") int limit);

    // 查询某个会话所包含的私信数量
    int findLetterCount(@Param("conversationId") String conversationId);

    // 查询某个会话的未读私信的数量
    // 如果传入的conversationId为空，则表示查询所有会话的未读私信数量
    int findLetterUnreadCount(@Param("userId") int userId, @Param("conversationId") String conversationId);

    // 新增消息
    int addMessage(Message message);

    // 修改消息的状态
    int readMessage(List<Integer> ids);

    // 查询某一主题下(评论、点赞、关注)的最近一条通知
    Message findLatestNotice(int userId, String topic);

    // 查询某一主题下(评论、点赞、关注)的通知数量
    int findNoticeCount(int userId, String topic);

    // 查询某一主题下(评论、点赞、关注)未读的通知数量
    int findNoticeUnreadCount(int userId, String topic);

    // 查询某一主题下(评论、点赞、关注)的所有通知
    List<Message> findNotices(int userId, String topic, int offset, int limit);

}
